package ivan.cheng.tuqu.activity;

import ivan.cheng.tuqu.Globals;
import ivan.cheng.tuqu.R;
import ivan.cheng.tuqu.util.BitmapUtil;
import ivan.cheng.tuqu.util.FileUtil;
import ivan.cheng.tuqu.view.ImageEditText;

import java.io.File;

import android.app.ProgressDialog;
import android.content.ComponentName;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class PublishPhotoActivity extends UIActivity implements
		OnClickListener{
	private static final int CHOOSECONTACTSREQUESTCODE = 0;

	protected ImageEditText commentContent;
	private ImageView mFaceSelectorIV;
	private ProgressDialog progressdialog = null;
	private Button shareBtn;
	private Button saveBtn;

	private TextView mTVCommentCount;
	private CheckBox mSaveCB;



	private boolean mbFromCamera = false;
	private ImageView mPhotoIV;
	private Bitmap mBitmap = null;
	private Button mSpecialBtn;
	protected String msComment = null;
	protected String msPhotoPath = null;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.publish_photo);

		shareBtn = (Button) this.findViewById(R.id.share_btn);
		shareBtn.setOnClickListener(this);
		
		saveBtn = (Button) this.findViewById(R.id.save_btn);
		saveBtn.setOnClickListener(this);

		commentContent = (ImageEditText) this
				.findViewById(R.id.et_comment_content);
		commentContent.addTextChangedListener(watcher);
		
		mFaceSelectorIV = (ImageView)this.findViewById(R.id.face_selector_iv);
		mFaceSelectorIV.setOnClickListener(this);

		mTVCommentCount = (TextView) findViewById(R.id.TV_comment_count);

//		if (null == mApp.getLocation().getPosition()
//				|| mApp.getLocation().getPosition().length() == 0) {
		/*} 
		else {
			mTVPosition.setText(getString(R.string.current_position)
					+ mApp.getLocation().getPosition());
		}*/

		mPhotoIV = (ImageView) this.findViewById(R.id.IV_photo);
		msPhotoPath = getIntent().getExtras().getString(
				Globals.EXTRA_PHOTO_PATH);
		mbFromCamera = getIntent().getExtras().getBoolean(
				Globals.EXTRA_IMAGE_SOURCE);
		if (msPhotoPath != null) {

			mSpecialBtn = (Button) this.findViewById(R.id.btn_special);
			mSpecialBtn.setOnClickListener(this);
			// set photo
			mBitmap = BitmapUtil.instance().DecodeFromFile(msPhotoPath);
			mPhotoIV.setImageBitmap(mBitmap);
		} else {
			Toast.makeText(this, getString(R.string.error), Toast.LENGTH_SHORT)
					.show();
			finish();
		}
		// UserDAO ud = new UserDAO(this);
		// DbUserOAuth doa = ud.GetUserOA(mApp.GetUser().getUser_id());
//		DbUserOAuth doa = mApp.GetDbUserOAuthInfo();
//		if (mApp.GetUser().getIs_sina_bind() != null
//				&& "1".equals(mApp.GetUser().getIs_sina_bind()) && null != doa
//				&& doa.getSina_key() != null && doa.getSina_secret() != null) {
//			mSinaCB.setChecked(true);
//		} else {
//			mSinaCB.setChecked(false);
//		}
//
//		if (mApp.GetUser().getIs_qq_bind() != null
//				&& "1".equals(mApp.GetUser().getIs_qq_bind()) && null != doa
//				&& doa.getQq_key() != null && doa.getQq_secret() != null) {
//			mQqCB.setChecked(true);
//		} else {
//			mQqCB.setChecked(false);
//		}
//		if (mApp.GetUser().getIs_renren_bind() != null
//				&& "1".equals(mApp.GetUser().getIs_renren_bind())
//				&& null != doa && doa.getRenren_key() != null
//				&& doa.getRenren_secret() != null) {
//			mRenrenCB.setChecked(true);
//		} else {
//			mRenrenCB.setChecked(false);
//		}


	}

	protected void startEffectProcessingActivity(String sPath) {
		Intent intent = new Intent();
		intent.setClass(PublishPhotoActivity.this,
				EffectsProcessingActivity.class);
		Bundle myConcernbl = new Bundle();
		myConcernbl.putString(Globals.EXTRA_PHOTO_PATH, sPath);
		intent.putExtras(myConcernbl);
		startActivity(intent);
		finish();
	}

	private TextWatcher watcher = new TextWatcher() {
		public void afterTextChanged(Editable s) {
		}

		public void beforeTextChanged(CharSequence s, int start, int count,
				int after) {
		}

		public void onTextChanged(CharSequence s, int start, int before,
				int count) {
			String content = commentContent.GetContentText();
			if (0 == content.length()) {
				shareBtn.setEnabled(false);
			} else {
				shareBtn.setEnabled(true);

			}
			mTVCommentCount.setText("" + content.length() + "/"
					+ Globals.MAX_INPUT_LENGTH);
		}
	};

	@Override
	public void onClick(View v) {
		int iID = v.getId();
		switch (iID) {
		case R.id.save_btn:
			try {
				String sSavePath = Globals.MX_FILE_PATH_SAVE + "tuqu_"
						+ System.currentTimeMillis() + ".jpg";
				FileUtil.getInstance().CopyAndScannable(msPhotoPath, sSavePath,
						this);
				Toast.makeText(this,
						getString(R.string.save_success) + sSavePath,
						Toast.LENGTH_LONG).show();
			} catch (Exception e) {
				Toast.makeText(this, getString(R.string.save_failure),
						Toast.LENGTH_LONG).show();
			}
			break;
		case R.id.share_btn:
			//shareBtn.setEnabled(false);
			publishPhoto();
			break;
		case R.id.et_comment_content:
			// mFaceSelectorPopupWindow.dismiss();
			break;
		case R.id.btn_special:
			finish();
			// startEffectProcessingActivity(msPhotoPath);
			break;
//		case R.id.CB_sina: {
//			if (mSinaCB.isChecked()) {
//				// UserDAO ud = new UserDAO(this);
//				// DbUserOAuth doa = ud.GetUserOA(mApp.GetUser().getUser_id());
//				DbUserOAuth doa = mApp.GetDbUserOAuthInfo();
//				if (null == doa || doa.getSina_key() == null
//						|| doa.getSina_secret() == null) {// 没有绑定过账号,我们要去绑定
//					mSinaCB.setChecked(false);
//					StartBindWeibo(ConfigUtil.SINAW);
//				}
//				mApp.GetUser().setIs_sina_bind("1");
//			} else {
//				mApp.GetUser().setIs_sina_bind("0");
//			}
//			UserDAO ud = new UserDAO(this);
//			ud.AddUser(mApp.GetUser());
//			break;
//		}
//		case R.id.CB_qq: {
//			if (mQqCB.isChecked()) {
//				// UserDAO ud = new UserDAO(this);
//				// DbUserOAuth doa = ud.GetUserOA(mApp.GetUser().getUser_id());
//				DbUserOAuth doa = mApp.GetDbUserOAuthInfo();
//				if (null == doa || doa.getQq_key() == null
//						|| doa.getQq_secret() == null) {// 没有绑定过账号,我们要去绑定
//					mQqCB.setChecked(false);
//					StartBindWeibo(ConfigUtil.QQW);
//				}
//				mApp.GetUser().setIs_qq_bind("1");
//			} else {
//				mApp.GetUser().setIs_qq_bind("0");
//			}
//			UserDAO ud = new UserDAO(this);
//			ud.AddUser(mApp.GetUser());
//
//			break;
//		}
//		case R.id.CB_renren: {
//			if (mRenrenCB.isChecked()) {
//				// UserDAO ud = new UserDAO(this);
//				// DbUserOAuth doa = ud.GetUserOA(mApp.GetUser().getUser_id());
//				DbUserOAuth doa = mApp.GetDbUserOAuthInfo();
//				if (null == doa || doa.getRenren_key() == null
//						|| doa.getRenren_secret() == null) {// 没有绑定过账号,我们要去绑定
//					mRenrenCB.setChecked(false);
//					StartBindWeibo(ConfigUtil.RENREN);
//				}
//				mApp.GetUser().setIs_renren_bind("1");
//			} else {
//				mApp.GetUser().setIs_renren_bind("0");
//			}
//			UserDAO ud = new UserDAO(this);
//			ud.AddUser(mApp.GetUser());
//
//			break;
//		}
//		case R.id.contacts_name:
//			// start choose contacts activity
//			Intent chooseContactsIntent = new Intent(PublishPhotoActivity.this,
//					ChooseContactActivity.class);
//			Bundle bl = new Bundle();
//			bl.putString(Globals.EXTRA_CHOOSE_CONTACTS_ID,
//					mCheckedContactsIDsString);
//			chooseContactsIntent.putExtras(bl);
//			startActivityForResult(chooseContactsIntent,
//					CHOOSECONTACTSREQUESTCODE);
//			break;
//		case R.id.face_selector_iv:
//			FaceSelectorDialog faceSelectorDialog = new FaceSelectorDialog(this, mFaceSelectorIV.getWidth());
//			faceSelectorDialog.setOnFaceChoosedListener(new FaceSelectorListener() {
//				
//				@Override
//				public void onFaceChoosed(int position) {
//					String sPattern = Emotion.FACE_REG_PRE + position
//							+ Emotion.FACE_REG_SUF;
//					int ipos = commentContent.getSelectionEnd();
//					if (Setting.MAX_INPUT_LENGTH < ipos + sPattern.length()) {// 超过最大长度了
//						return;
//					}
//					commentContent.insertIcon(R.drawable.face01 + position,
//							sPattern);
//				}
//			});
//			faceSelectorDialog.show();
//			break;
			default:
				break;
		}
	}

	private void publishPhoto() 
	{
		msComment = commentContent.GetContentText();
		
		Intent intent = new Intent(Intent.ACTION_SEND);
		//Intent intent = new Intent(this,);
		// 设置Intent的内容类型为image/png.
		intent.setType("image/png");
		// 通过创建File的对象获取外存（SDCard）中的图片
		File f = new File(msPhotoPath);
		// 获取文件的URL
		Uri u = Uri.fromFile(f);
		//支持一般的分享（微博、。。。）
	//	intent.setComponent(new ComponentName(pkg, cls));
		intent.putExtra(Intent.EXTRA_TEXT, msComment);
		intent.putExtra(Intent.EXTRA_STREAM, u);  
		intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		startActivity(Intent.createChooser(intent, "分享"));
		
		
//		mbUpPos = mPositionCB.isChecked();
//		if (msComment == null) {
//			msComment = "";
//		}
//		String sPosition = "";
//		if (true == mbUpPos) {// 用户同意上传位置
//			sPosition = mApp.getLocation().getPosition();
//		}
//		PhotoUpLoadManager.getInstance().StartSendFileRequest(mApp,
//				Setting.MX_ADDPICTRUE_TYPE, msPhotoPath, msComment, sPosition,
//				mApp.getLocation().getLongitude(),
//				mApp.getLocation().getLatitude(),
//				(mbFromCamera == true) ? "0" : "1", "",
//				mChooseContactsCB.isChecked(), mCheckedContactsNumbersString);
//		LogUtil.d("mbFromCamera:" + ((mbFromCamera == true) ? "0" : "1"));
//		if (mSaveCB.isChecked()) {
//			try {
//				String sSavePath = Setting.MX_FILE_PATH_SAVE + "Mioshow_"
//						+ System.currentTimeMillis() + ".jpg";
//				FileUtil.getInstance().CopyAndScannable(msPhotoPath, sSavePath,
//						this);
//				Toast.makeText(this,
//						getString(R.string.save_success) + sSavePath,
//						Toast.LENGTH_LONG).show();
//			} catch (Exception e) {
//				Toast.makeText(this, getString(R.string.save_failure),
//						Toast.LENGTH_LONG).show();
//			}
//		}
//		
//		// 去掉图片说明里的表情符号
//		String regEx = "\\[I:[0-9]:[^:]*?\\]";
//		msComment = msComment.replaceAll(regEx, "");
//		LogUtil.d("content in SnsReferenceActivity->PublishPhotoByWeibo: " + msComment);
//
//		if (mSinaCB.isChecked()) {
//			new Thread(new Runnable() {
//
//				@Override
//				public void run() {
//					PublishPhotoByWeibo();
//				}
//			}).start();
//
//		}
//
//		if (mQqCB.isChecked()) {
//			new Thread(new Runnable() {
//
//				@Override
//				public void run() {
//					try {
//						PublishPhotoByQq();
//					} catch (Exception e) {
//						// TODO Auto-generated catch block
//						LogUtil.d(e.toString());
//					}
//				}
//			}).start();
//
//		}
//
//		if (mRenrenCB.isChecked()) {
//
//			try {
//				PublishPhotoByRenren();
//			} catch (Exception e) {
//				// TODO Auto-generated catch block
//				LogUtil.d("Send renren Error=" + e.toString());
//			}
//
//		}

//		Toast.makeText(this, getString(R.string.upload_image_ing),
//				Toast.LENGTH_SHORT).show();
//		setResult(Activity.RESULT_OK);
		// 页面跳转至上传列表页面
//		Intent uploadPhotoIntent = new Intent(this,
//				UploadPhotosListActivity.class);
//		// uploadPhotoIntent.setFlags(Intent.fl)
//		uploadPhotoIntent.putExtra(Globals.EXTRA_BSHOW, false);
//		startActivity(uploadPhotoIntent);
//		finish();
	}


	@Override
	protected void onDestroy() {
		if (mBitmap != null) {
			mBitmap.recycle();
			// mBitmap = null;
		}

		super.onDestroy();
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		Bundle bd = null;
		if (data != null)
			bd = data.getExtras();
//		if (RQ_CODE_AUTH == requestCode) {
//			if (resultCode == Activity.RESULT_OK) {
//
//				String sType = GetWeiboType();
//				if (sType.equals("1")) {
//					mSinaCB.setChecked(true);
//				} else if (sType.equals("2")) {
//					mQqCB.setChecked(true);
//				} else if (sType.equals("4")) {
//					mRenrenCB.setChecked(true);
//				} else if (sType.equals("6")) {
//
//				} else if (sType.equals("7")) {
//
//				}
//				String sUserID = OAuthConstant.getInstance().getUser_id();
//				MioshowProtocalManager.getInstance().BindAccount(mApp, this,
//						mApp.GetUser().getUser_id(),
//						mApp.GetUser().getUser_name(), sUserID, sUserID,
//						OAuthConstant.getInstance().getToken(),
//						OAuthConstant.getInstance().getTokenSecret(), sType);
//			}
//
//		} else if (requestCode == CHOOSECONTACTSREQUESTCODE) {
//			if (resultCode == Activity.RESULT_OK) {
//				if (bd != null) {
//					mCheckedContactsNameString = bd
//							.getString(Globals.EXTRA_CHECKED_CONTACT_NAMES);
//					mCheckedContactsNumbersString = bd
//							.getString(Globals.EXTRA_CHECKED_CONTACT_NUMBERS);
//					mCheckedContactsIDsString = bd
//							.getString(Globals.EXTRA_CHOOSE_CONTACTS_ID);
//					String countString = bd
//							.getString(Globals.EXTRA_CHECKED_CONTACT_COUNT);
//
//					// set mContactsNameTV text
//					String contactsNameToShow = mCheckedContactsNameString
//							+ getString(R.string.etc) + countString
//							+ getString(R.string.checked_contact_postfix);
//
//					mContactsNameTV.setText(contactsNameToShow);
//					mChooseContactsCB.setChecked(true);
//				}
//			}
//		}

	}
}